package main

import (
	"fmt"
	// "io/ioutil"
	// "io"
	"net"
	"os"
	// "time"
)

func main() {
	server := "127.0.0.1:8081"
	msg := "Hello$_ oo$_sdfsd$_hahsdfjkl$_lkj$_哈哈\r\n"
	args := os.Args
	if nil != args && len(args) > 2 {
		server = args[1]
		msg = args[2]
	}

	tcpAddr, err := net.ResolveTCPAddr("tcp4", server)
	checkErr(err)

	conn, err := net.DialTCP("tcp", nil, tcpAddr)
	defer conn.Close()
	checkErr(err)

	fmt.Printf("connect to %s success\n", server)
	sender(conn, msg)
	// time.Sleep(2 * 1e9)
	// conn.Close()
	// os.Exit(1) 强制退出，不会执行defer的方法
}

func sender(conn net.Conn, msg string) {
	n, err := conn.Write([]byte(msg)) //n表示发送数据的大小
	checkErr(err)
	fmt.Printf("send msg is: %s size is: %d byte\n", msg, n)

	/*result, err := ioutil.ReadAll(conn)
	checkErr(err)
	fmt.Printf("receive msg is: %s size is:%d  byte\n", result, len(result))
	*/
	buf := make([]byte, 1024) //定义一个切片
	// for i := 0; i < 3; i++ {
	r, err := conn.Read(buf) //r表示返回数据的大小
	checkErr(err)
	rmsg := string(buf[:r])
	fmt.Printf("receive msg is: %s size is:%d  byte\n", rmsg, r)
	// }
}

func checkErr(err error) {
	if err != nil {
		fmt.Fprintf(os.Stderr, "Fatal error:%s", err.Error())
		os.Exit(1)
	}
}
